perm filename MSGS.78[RUT,LSP]1 blob sn#343715 filedate 1978-03-22 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00003 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	∂10-Jan-78  0053	FTP:LEFAIVRE at RUTGERS-10 	New RUTGERS/UCI LISP Taking Shape    
C00009 00003	∂03-Mar-78  1323	FTP:LEFAIVRE at RUTGERS-10 	Notice of new LISP system which went to all Rutgers LISPers   
C00024 ENDMK
C⊗;
∂10-Jan-78  0053	FTP:LEFAIVRE at RUTGERS-10 	New RUTGERS/UCI LISP Taking Shape    
Date:  9 Jan 1978 (Monday) 2230-EST
From: LEFAIVRE at RUTGERS-10
Subject: New RUTGERS/UCI LISP Taking Shape
To: @LISP.ARP[3442,46] at RUTGERS-10:

Dear LISPer:

This letter is being sent to all known users (and potential users) of
RUCI LISP (RUTGERS/UCI LISP),  which is now in use at around 25 sites
and continues to spread.  I would like to thank those of you who have
notified  me of bugs and made suggestions for improvements.  A number
of bugs have been corrected over the past year -  I  can't  guarantee
that there are none left, but they are getting more and more obscure.
A number of improvements have also been made - I can't even begin  to
describe them all here, but a few are mentioned below.

The  real  reason  for this note is to inform you that in addition to
improvements to existing modules and  a  host  of  new  functions,  a
couple  of  changes  have  been  made  which  affect  existing files.
This will cause  some  temporary  inconvenience  (although a  MIC/SOS
conversion file will be provided), but I feel the final product  will
be worth it.  The changes include:

- The system is now called LISP, with the compiler called LISPC.  The
initialization  file  is  now  LISP.INI,  and  you  can  also  have a
LISPC.INI, PLNR.INI, CNVR.INI, or FUZZY.INI.

- The QUOTE macro character has finally been changed from @ to  '  to
make  us compatible with the rest of the LISP world.  @ will continue
to be recognized (unless it is MODCHRed), but the prettyprinter  will
now output '.

-  The  comment  functions  have  been  changed to ; and ;; (* is now
equivalent to *TIMES).  (; ...) comments are printed off to the right
of  the  listing,  and  (;;  ...) comments are printed at the current
indentation level.

- The "ignored CR/LF" character used  to  break  atoms  over  a  line
boundary is now ~ (tilde - ASCII 176).  ↑Y, like ↑Z before it, caused
problems on certain terminals - they will continue to  be  recognized
on  input  so  that  existing  files  can  be read, but ~ will now be
output.  Because of the strange handling of  ASCII  176  in  monitors
prior to 6.03, I am hoping that no one has files containing tildes.

-  The  default  integer  base  is  now  10.,  with  *NOPOINT=T  (but
*NOPOINTDSK remains NIL so that files can be dumped and read back  in
correctly).

-  The  old  CURRCOL is now called CHRPOS - CHRPOS and CHRCT now read
the actual carriage position of the TTY, so it doesn't matter whether
the  last  input  line was terminated with CR or ALTMODE (this is now
used to provide a nicer top-level).

- Lower-case letters in atomic symbols will now be  raised  to  upper
case  (unless  slashified  or  in a string) if *RAISE=T (*RAISEDSK is
used for file input).

- There  is  a  new  MACROEXPANSION  feature  which  can  be  set  to
automatically  save  a  macro  expansion so that it is only done once
(its operation is transparant to the user).  Makes a  big  difference
for complex macros.

- Some new code from Texas supporting SFDs and random access input is
now being tested.

-  There is a new SORT/MERGE package from CMU, a string concatenation
function, a way to control the file protection used  for  new  files,
some new macros, and a lot of other generally useful stuff.

I  hope  to  have  the  new  system  completely  tested and ready for
distribution in February, and have thus been sitting on the  tapes  I
now  have.  Others are welcome to send a tape, or if you prefer, drop
me a note and I'll send you the revised Rutgers documentation and you
can  see  for  yourself  what's there (although you won't see the bug
fixes and the many undocumented internal improvements). There is some
hope  that  a  comprehensive manual will be written this year, but no
one should hold their breath waiting for it.

As usual, questions or comments are welcome.

					- Prof. Rick LeFaivre
					  Computer Science Dept.
					  Hill Center, Busch Campus
					  Rutgers University
					  New Brunswick, NJ  08903


∂03-Mar-78  1323	FTP:LEFAIVRE at RUTGERS-10 	Notice of new LISP system which went to all Rutgers LISPers   
Date:  3 Mar 1978 (Friday) 1622-EST
From: LEFAIVRE at RUTGERS-10
Subject: Notice of new LISP system which went to all Rutgers LISPers
To:   CRIS.PERDUE at CMU-10A, TYSON at UTEXAS-, DIFFIE at SU-AI

To our long-suffering LISP users:

Well, the new version of LISP finally appears ready to go.  It currently
resides in LSP:LISP, and I would like to ask all of you to give it a
workout before I move it over to SYS:.  You may run it via .R LSP:LISP,
with the new compiler being accessed via .R LSP:LISPC.  Please try out any
previous bug-producing code - many minor problems have been fixed in
this release, but if there are any left which I missed, or (heaven forbid)
any new bugs which have been introduced, please let me know as soon as
possible.

Most of the mofifications involve bug fixes and extensions, but there
have been a couple of actual changes as well which you must be
aware of.  First, I finally decided against changing the "ignored cr/lf"
character from ↑Y to ~, so the tilde character is still available for
general use.  The terminal problem has been solved by not ouputting ↑Y's
to terminals - they are now used for breaking atoms over line boundaries
in files only.

The major change involves the handling of comments:  the new comment functions
are ; (replacing *, which is now equivalent to *TIMES), and ;; (replacing
** and ***).  ; comments print starting in column 40, and ;; comments
print at the current level of indentation.  Although comments may still
be input as list structures (i.e., (; This is a comment)), the preferred
mode, and the mode used by the prettyprinter, is to use braces:
{; This is a comment.}.  "{" is defined as a printmacro which reads
everything from the comment function to the "}" and stores it as a
string, saving considerable space and allowing special characters such
as period to appear in comments.  The prettyprinter knows how to print
such packed comments correctly.  They are a pain to edit, however, so
the new edit command UNPACK has been added to unpack a comment from its
string representation back to a list form.  There is no need to convert
it back again, as this will be done by the prettyprinter so that it will be
read as a string the next time the code is loaded.

Most of the other actual changes involve functions which are no longer with
us:  PP* (both function and edit command) and PPL* have been changed to
PP; and PPL; (there is also a P; edit command); CURRCOL is now called
CHRPOS; *INSERT, *MERGE, and *SORT are gone (INSERT, MERGE, and SORT
now accept missing arguments); LEXORDERCAR is gone (LEXORDER automatically
moves to the left most atom of each argument); the RAISE function has
been replaced by a *RAISE flag - if *RAISE=T, all chars read by READ
will be raised to upper case except those in strings and slashified chars;
and the QUOTE macro character has been changed to ' (although @ will still
be recognized on input).  Finally, the LISP initialization file is now
called LISP.INI instead of INIT.LSP.  The compiler uses a separate init
file, LISPC.INI.

Even though these changes are not substantial, I realize the inconvenience
of having to change things over by hand.  I have therefore put together a
conversion package for you to use.  To convert any existing file, simply
start lisp going, do a (DSKIN LSP: (CONVRT.LSP)), DSKIN your code as usual,
and then do one or more DSKOUTs to recreate your LSP files.  All of the
above changes (except the *RAISE change) will be made for you automatically.

In addition to these changes, there have been a number of extensions
made to the system.  These will be described in a new version of ILISP.MAN
in the near future, but until then I'll whet your appetites with a brief
overview of some of the major additions:

- There is now a new string representation which removes the old confusion
  between strings and litatoms.  Strings now take up less space than
  litatoms, they don't have property lists, and they evaluate to themselves
  like numbers.  LITATOM, STRINGP, and NUMBERP now define three disjoint
  classes of ATOMs.

- DSKOUT is now somewhat more useful as a file-handling function:
  (DSKOUT (file.ext)) will see if the atom fileFNS is bound - if so,
  it will be passed on to PPL.  If not, fileFNS will be bound to the
  value of (SORT (APPEND ALLVALS ALLFNS)) and passed to PPL.  Thus
  (DSKOUT (file.LSP)) is a quick way to save everything you've typed
  in during this session.

- User-defined ersatz devices are now supported.  You may associate a
  ppn with a device name using a DEVPPN property:

	(DEFPROP RICK: (3442Q 46Q) DEVPPN)

  RICK: may now be used anyplace an actual ppn can be used, including
  in DSKIN/OUT and DIRF.

- SFD's are now supported, in the form (proj# prog# sfd1 sfd2 ...).

- Random access input is now supported:  (UGETI) and (UGETO) return
  the byte position of the next char to be input or output on the
  current channel (except for the TTY).  (USETI byte) sets the input
  pointer to read from the current input channel starting at that byte.
  (The random access and sfd code came to us from the Univ. of Texas).

- FILPRO now gives the desired file protection for files written by
  LISP (NIL implies use your default protection).

- Macro expansions are now automatically saved so they are only
  expanded once.

- Missing args to SUBRs and EXPRs are now set to NIL by the system.

- PP only unbreaks functions when they have been broken-into, i.e.,
  the code has been modified by the break package.

- TRACE now accepts a conditional trace condition, and you can specify
  whether the trace is to go to the terminal or the current output
  channel.

- There are several new macros, including PUSH, POP, INCR, DECR, F:L,
  and a fancy SAIL-like DO macro.

- %PRINFNTOP is bound to the top-level print function.  It is initially
  PRIN1, but may be changed by the user.

- There are a number of more useful names for old functions.  They include
  + (*PLUS), - (*DIF), * (*TIMES), // (*QUO), +I (ADD1), -I (SUB1),
  = (EQUAL), LT (*LESS), GT (*GREAT), LE, GE (new fns), PRIN (PRIN1),
  MAPL (MAPLIST), MAPCL (MAPCAR), and CONSCOUNT (SPEAK).

- File backups are now better maintained.  FILBAK is set to Q, and is
  inserted into the extension a la SOS.  A secondary backup is now
  maintained, so that unless changed by the user, LISP keeps three
  copies of a file:  FOO.LSP (or whatever) is the most recent version,
  FOO.QSP is the next most recent, and FOO.QBK is the original version.
  This is a compromise between just keeping the two most recent versions
  (as was done before) and keeping multiple versions.  One always can be
  assured that FOO.QBK is the original version of FOO, dating back to
  the last time a .DELETE FOO.Q?? was done.  The secondary backup is
  under the control of the variable FILBAKBAK - if NIL, no second backup
  is kept, else it gives the extension.

- EVERY and SOME now take multiple args like the other map functions.

- FIX is a new break command which combines EDIT and EX.  EX takes an
  optional location spec.

- SORT and UNPACK (mentioned above) are new EDIT commands.  MBD, XTR,
  and : now work on top-level list structures.

Well, I could go on, but you get the idea.  Those of you who want
information about the new system should get in touch with me.  I
won't promise when the new manual will be ready, since there are a
number of changes.  Again, let me know if any bugs turn up.

∂05-Mar-78  0255	WD  	NEW LISP SYSTEM
To:   LEFAIVRE@RUTGERS-10
	I got your message.  Now I need to know what files I should
copy.  I will start by just trying to FTP them, since you
think that will now work, and get back to you if it doesn't.
				Thanks,
					Whit

∂05-Mar-78  1256	FTP:LEFAIVRE at RUTGERS-10 	NEW LISP    
Date:  5 Mar 1978 (Sunday) 1558-EST
From: LEFAIVRE at RUTGERS-10
Subject: NEW LISP
To:   WD at SU-AI

Whit-

LSP:LISP.EXE and LSP:LISPC.EXE are the newest LISP and LISP compiler sav
files, but they are modified to run out of LSP:[11,10].  To build new
versions to run out of SYS: or some place else, you can use LSP:LISP.MIC
and LSP:LISPC.MIC to build the sav files.  Probably the easiest way to
insure getting everything you need is to copy everything of the form
LSP:LISP.*, LSP:LISPC.*, LSP:SYMMAK.*, and LSP:LOADER.*

∂05-Mar-78  1304	FTP:LEFAIVRE at RUTGERS-10 	UPDATE 
Date:  5 Mar 1978 (Sunday) 1606-EST
From: LEFAIVRE at RUTGERS-10
Subject: UPDATE
To:   WD at SU-AI

Sorry, you also need LSP:LAP, LSP:BREAK.LAP, LSP:ERRORX.LAP, LSP:PP.LAP,
and LSP:EDIT.LAP.

So far no bugs have turned up.  I'm keeping my fingers crossed.  By the way,
you will notice that the compiler now allocates free acs from 5 down instead
of from 1 up.  Doesn't seem to make a great deal of difference, but there are
several instances when things can stay in 5 and not have to be pushed.  The
compiler was also fixed to compile the map fns like they are interpreted, i.e.,
the CDRs are taken and saved before the function is called, letting one map
down a list and do rplacds if desired.